global.display.connect('init-xserver', (display, task) => {
IBusManager.getIBusManager().restartDaemon(['--xim']);
- Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail');
-
- /* Leave this watchdog timeout so don't block indefinitely here */
- let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
- Gio.DBus.session.unwatch_name(watchId);
- log('Warning: Failed to start gsd-xsettings');
- task.return_boolean(true);
- timeoutId = 0;
- return GLib.SOURCE_REMOVE;
- });
- /* When gsd-xsettings daemon is started, we are good to resume */
- let watchId = Gio.DBus.session.watch_name(
- 'org.gnome.SettingsDaemon.XSettings',
- Gio.BusNameWatcherFlags.NONE,
- () => {
- Gio.DBus.session.unwatch_name(watchId);
- if (timeoutId > 0) {
+ try {
+ if (Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail')) {
+ /* Leave this watchdog timeout so don't block indefinitely here */
+ let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
+ Gio.DBus.session.unwatch_name(watchId);
+ log('Warning: Failed to start gsd-xsettings');
task.return_boolean(true);
- GLib.source_remove(timeoutId);
- }
- },
- null);
+ timeoutId = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+
+ /* When gsd-xsettings daemon is started, we are good to resume */
+ let watchId = Gio.DBus.session.watch_name(
+ 'org.gnome.SettingsDaemon.XSettings',
+ Gio.BusNameWatcherFlags.NONE,
+ () => {
+ Gio.DBus.session.unwatch_name(watchId);
+ if (timeoutId > 0) {
+ task.return_boolean(true);
+ GLib.source_remove(timeoutId);
+ }
+ },
+ null);
+ }
+ } catch (e) {
+ log('Error starting gsd-xsettings: %s'.format(e.message));
+ }
+
return true;
});
global.display.connect('x11-display-closing', () => {
if (!Meta.is_wayland_compositor())
return;
- Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
+ try {
+ Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
+ } catch (e) {
+ log('Error stopping gsd-xsettings: %s'.format(e.message));
+ }
IBusManager.getIBusManager().restartDaemon();
});